The present invention relates to the field of knowledge-based expert systems. Knowledge-based expert systems are computer systems which perform reasoning by using inference engine, knowledge base (KB), and requested data. They perform reasoning in the same manner as human experts, because human experts' knowledge is stored in the knowledge base. Different tasks need different knowledge bases which are created by experts in different domains. Currently, most knowledge-based expert systems are created by using knowledge engineering tools, commonly called expert system shells.
Expert system shells simplify the process of building expert systems. In most of current expert system shells, the inference engine is built-in. Building an expert system in any domain is reduced to building a knowledge base in the specific domain.
The build-in inference engine is a computer program written by C, Ada, Lisp, Prolog, or other programming languages. It can reason the knowledge base created in a required format. Currently, there are three types of knowledge bases:
1. Rule-based: A set of `if-then` rules; PA1 2. Frame-based: Structured facts and relations; and PA1 3. Logics: Predicates and values. PA1 1. A stored knowledge base called code truth table. It is a two-dimensional array of numbers or characters. This is a new type of knowledge base stored in the storage of computer. It is the working knowledge base. PA1 2. An input knowledge base. This knowledge base is not a set of `if-then` rules. It is a truth table called input truth table. Its structure is just like a table in any relational database. PA1 3. An automatic inference engine (AIE). This is a new type of inference engine. It reasons any stored knowledge base by a double loop without compilation. No matter what the size of the input knowledge base is, and no matter what kind of knowledge is stored, the double loop always proceeds the inference automatically. Therefore, the inference engine is called the automatic inference engine and the system is called the automatic expert system. PA1 (a) An input knowledge base (IKB) in the form of a truth table is called input truth table (ITT); PA1 (b) An Attribute-value table (AVT) is defined and inputted by the user, and the format of the ITT is defined by the AVT; PA1 (c) A stored knowledge base in the form of a two-dimensional array is called the code truth table (CTT). Each entry of the CTT is a code of the value of the corresponding entry of the ITT; PA1 (d) A transfer engine (TE), which is a build-in computer program, translates values in the ITT to their corresponding codes in CTT and translates the codes in CTT back to its corresponding values in ITT by the aid of the AVT; and PA1 (e) An automatic inference engine (AIE), which is a build-in computer program, reasons the CTT automatically.
Among these three types, the rule-based knowledge base is the most commonly used one. In some applications, knowledge bases are very big, and may contain thousands of `if-then` rules. They are built by the cooperation of domain experts and knowledge engineers, who are software engineers familiar with the structures and requirements of expert systems and the expert system shells. The `if-then` rules or frames of knowledge bases generally are totally different from any knowledge representation formats in domain experts' professional or daily life. Domain experts need the help of knowledge engineers in the process of design and creation of any knowledge bases. In order to be executed, the created knowledge base needs to be compiled and integrated with the inference engine.
The cooperation of domain experts and knowledge engineers is the most time-consuming, and maybe the most money-consuming process. And it is the most difficult part in building the expert system. As human knowledge is growing up rapidly, the knowledge base needs to be modified frequently. In modification phase, the cooperation of domain experts and knowledge engineers is still necessary. Therefore, since 70's, it is believed that the process, which involves domain experts and knowledge engineers working together to design, construct, and modify the domain knowledge base is the main bottleneck in the development of expert systems.
Until today, the bottleneck problem remains unsolved. Most expert systems and commercial expert system shells still use `if-then` rule-based knowledge bases. And domain experts and knowledge engineers still have to work together to design and create domain knowledge bases. Not only the commercial expert system shells in the market, but also the recently applied and approved patents, such as U.S. Pat. No. 4,970,657 (Expert Knowledge System Development Tools, U.S. Advanced Technology, 11/90), U.S. Pat. No. 4,970,658 (Knowledge Engineering Tools, Tesseract Corp, 11/90), and U.S. Pat. No. 4,912,648 (Expert System Inference Engine, IBM, 3/90), still use the `if-then` rule-based or frame-based knowledge base structures.
Most current marketing expert system shells are designed for the knowledge base in the form of `if-then` rules. They need not only an editor screen to input and modify the rules in the knowledge base but also a program to compile, integrate, and link the input knowledge base and the stored inference engine together. (The Rete algorithm developed and published by Forgy in 1982 is a widely used example, but it is pretty complicated.)